Alunos: Claudio e Gabriell
Disciplina: Gestão de Dados para Big Data
Neste trabalho exploramos detalhes de como a Covid-19 está se comportando no estado do Rio Grande do Sul. Os três datasets utilizados estão referenciados na seção Datasets.
import os
import re
import pymongo
from bson.objectid import ObjectId
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
if not os.path.exists("plotly"):
os.mkdir("plotly")
Criar conexão com a base de dados.
connection_string = "mongodb://192.168.0.17:27017/gdbd"
client = pymongo.MongoClient(connection_string)
db = client.gdbd
Carregar dados para o MongoDB.
# https://opendatasus.saude.gov.br/dataset/casos-nacionais
covid_rs_1_df = pd.read_csv(
"datasets/covid_rs_1.csv", encoding="ISO-8859-1", delimiter=";"
)
covid_rs_1_df["idade"] = covid_rs_1_df["idade"].apply(
lambda x: int(x) if x and x != "undefined" else -1
)
covid_rs_1_df["dataNotificacao"] = pd.to_datetime(
covid_rs_1_df["dataNotificacao"], format="%Y-%m-%dT%H:%M:%S.%fZ", errors="coerce",
).dt.normalize()
covid_rs_1_df["dataNotificacao"] = (
covid_rs_1_df["dataNotificacao"]
.astype(object)
.where(covid_rs_1_df["dataNotificacao"].notnull(), None)
)
covid_rs_2_df = pd.read_csv(
"datasets/covid_rs_2.csv", encoding="ISO-8859-1", delimiter=";"
)
covid_rs_2_df["idade"] = covid_rs_2_df["idade"].apply(
lambda x: int(x) if x and x != "undefined" else -1
)
covid_rs_2_df["dataNotificacao"] = pd.to_datetime(
covid_rs_2_df["dataNotificacao"], format="%Y-%m-%dT%H:%M:%S.%fZ", errors="coerce",
).dt.normalize()
covid_rs_2_df["dataNotificacao"] = (
covid_rs_2_df["dataNotificacao"]
.astype(object)
.where(covid_rs_2_df["dataNotificacao"].notnull(), None)
)
db.covid.drop()
db.covid.insert_many(covid_rs_1_df.to_dict("records"))
db.covid.insert_many(covid_rs_2_df.to_dict("records"))
# https://brasil.io/dataset/covid19/caso_full
covid_full_df = pd.read_csv("datasets/covid_full.csv")
covid_full_df["date"] = pd.to_datetime(covid_full_df["date"], format="%Y-%m-%d")
covid_full_df["last_available_date"] = pd.to_datetime(
covid_full_df["last_available_date"], format="%Y-%m-%d"
)
db.covid_full.drop()
db.covid_full.insert_many(covid_full_df.to_dict("records"))
# www.atlasbrasil.org.br/ranking
idh_df = pd.read_csv("datasets/idh_rs.csv")
idh_df = idh_df.apply(lambda x: x.str.replace(",", "."))
idh_df["municipio"] = idh_df["municipio"].apply(lambda x: x.replace(" (RS)", ""))
idh_df = idh_df.astype(
{
"idhm": float,
"idhm_renda": float,
"idhm_educacao": float,
"idhm_longevidade": float,
}
)
db.idh.drop()
db.idh.insert_many(idh_df.to_dict("records"))
db.covid.find({"_id": ObjectId("5fc430fdb08f0dc615d042fb")})[0]
{'_id': ObjectId('5fc430fdb08f0dc615d042fb'),
'ÿid': 'nT808b2AqG',
'dataNotificacao': datetime.datetime(2020, 7, 27, 0, 0),
'dataInicioSintomas': '2020-07-20T03:00:00.000Z',
'dataNascimento': '1977-04-23T03:00:00.000Z',
'sintomas': 'Dor de Garganta',
'profissionalSaude': 'Não',
'cbo': nan,
'condicoes': nan,
'estadoTeste': 'Concluído',
'dataTeste': '2020-07-27T03:00:00.000Z',
'tipoTeste': 'Imunoensaio por Eletroquimioluminescência - ECLIA IgG',
'resultadoTeste': 'Negativo',
'paisOrigem': 'undefined',
'sexo': 'Feminino',
'estado': 'RIO GRANDE DO SUL',
'estadoIBGE': '43',
'municipio': 'Viamão',
'municipioIBGE': '4323002',
'origem': 'undefined',
'cnes': '2229641',
'estadoNotificacao': 'RIO GRANDE DO SUL',
'estadoNotificacaoIBGE': '43',
'municipioNotificacao': 'Viamão',
'municipioNotificacaoIBGE': '4323002',
'excluido': 'undefined',
'validado': 'undefined',
'idade': 43,
'dataEncerramento': nan,
'evolucaoCaso': nan,
'classificacaoFinal': nan}
db.covid_full.find({"_id": ObjectId("5fc453eb88d93ba68cbcdeac")})[0]
{'_id': ObjectId('5fc453eb88d93ba68cbcdeac'),
'city': 'São Paulo',
'city_ibge_code': 3550308.0,
'date': datetime.datetime(2020, 2, 25, 0, 0),
'epidemiological_week': 9,
'estimated_population': 12325232.0,
'estimated_population_2019': 12252023.0,
'is_last': False,
'is_repeated': False,
'last_available_confirmed': 1,
'last_available_confirmed_per_100k_inhabitants': 0.00811,
'last_available_date': datetime.datetime(2020, 2, 25, 0, 0),
'last_available_death_rate': 0.0,
'last_available_deaths': 0,
'order_for_place': 1,
'place_type': 'city',
'state': 'SP',
'new_confirmed': 1,
'new_deaths': 0}
db.idh.find({"_id": ObjectId("5fc3141780488fb6340c127c")})[0]
{'_id': ObjectId('5fc3141780488fb6340c127c'),
'municipio': 'Porto Alegre',
'idhm': 0.805,
'idhm_renda': 0.857,
'idhm_educacao': 0.702,
'idhm_longevidade': 0.867}
testes_df = db.covid.aggregate(
[
{"$group": {"_id": "$resultadoTeste", "count": {"$sum": 1}}},
{"$sort": {"count": -1}},
]
)
testes_df = pd.DataFrame(list(testes_df))
testes_df.head()
| _id | count | |
|---|---|---|
| 0 | Negativo | 1176142 |
| 1 | NaN | 405115 |
| 2 | Positivo | 356994 |
| 3 | Inconclusivo ou Indeterminado | 1847 |
| 4 | undefined | 138 |
fig = px.pie(testes_df, values="count", names="_id", title="Testes Realizados")
fig.update_traces(textposition="inside")
fig.update_layout(
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.write_image("plotly/testes-realizados.png", width=700, height=500, scale=7)
fig.show()
sintomas_df = db.covid.aggregate(
[
{"$match": {"resultadoTeste": "Positivo"}},
{"$group": {"_id": "$sintomas", "count": {"$sum": 1}}},
{"$sort": {"count": -1}},
]
)
sintomas_df = pd.DataFrame(list(sintomas_df))
sintomas_df.head(10)
| _id | count | |
|---|---|---|
| 0 | Outros | 97736 |
| 1 | Assintomático | 35620 |
| 2 | Tosse, Outros | 11343 |
| 3 | Febre, Tosse, Outros | 9404 |
| 4 | Febre, Outros | 8203 |
| 5 | Tosse | 7097 |
| 6 | Febre, Tosse | 6657 |
| 7 | Dor de Garganta, Febre, Tosse, Outros | 4670 |
| 8 | Dor de Garganta, Tosse, Outros | 4414 |
| 9 | Dor de Garganta, Outros | 3989 |
sintomas_df.loc[sintomas_df["_id"] != "Assintomático", "_id"] = "Sintomático"
fig = px.pie(
sintomas_df, values="count", names="_id", title="Sintomáticos x Assintomáticos"
)
fig.update_traces(textposition="inside")
fig.update_layout(
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.write_image("plotly/sintomaticos-assintomaticos.png", width=700, height=500, scale=7)
fig.show()
infectados_idade_df = db.covid.aggregate(
[
{"$match": {"resultadoTeste": "Positivo"}},
{
"$bucket": {
"groupBy": "$idade",
"boundaries": [
0,
10,
20,
30,
40,
50,
60,
70,
80,
90,
100,
110,
120,
130,
],
"default": ">=130",
"output": {
"casos": {"$sum": 1},
"mortes": {
"$sum": {"$cond": [{"$eq": ["$evolucaoCaso", "Óbito"]}, 1, 0]}
},
},
}
},
{
"$project": {
"_id": 0,
"idade": "$_id",
"idade_label": {
"$cond": [
{"$eq": ["$_id", ">=130"]},
">=130",
{
"$concat": [
{"$toString": "$_id"},
" - ",
{"$toString": {"$add": [{"$toInt": "$_id"}, 9]}},
]
},
]
},
"casos": 1,
"mortes": 1,
"letalidade": {"$divide": ["$mortes", "$casos"]},
}
},
{"$sort": {"idade": 1}},
]
)
infectados_idade_df = pd.DataFrame(list(infectados_idade_df))
infectados_idade_df["letalidade"] = infectados_idade_df["letalidade"] * 100
infectados_idade_df.head(20)
| casos | mortes | idade | idade_label | letalidade | |
|---|---|---|---|---|---|
| 0 | 11021 | 1 | 0 | 0 - 9 | 0.009074 |
| 1 | 20040 | 1 | 10 | 10 - 19 | 0.004990 |
| 2 | 68977 | 2 | 20 | 20 - 29 | 0.002900 |
| 3 | 84859 | 20 | 30 | 30 - 39 | 0.023569 |
| 4 | 67651 | 14 | 40 | 40 - 49 | 0.020694 |
| 5 | 52196 | 50 | 50 | 50 - 59 | 0.095793 |
| 6 | 30615 | 55 | 60 | 60 - 69 | 0.179650 |
| 7 | 13786 | 94 | 70 | 70 - 79 | 0.681851 |
| 8 | 5599 | 66 | 80 | 80 - 89 | 1.178782 |
| 9 | 1298 | 21 | 90 | 90 - 99 | 1.617874 |
| 10 | 52 | 2 | 100 | 100 - 109 | 3.846154 |
| 11 | 1 | 0 | 110 | 110 - 119 | 0.000000 |
| 12 | 21 | 0 | 120 | 120 - 129 | 0.000000 |
| 13 | 878 | 0 | >=130 | >=130 | 0.000000 |
fig = go.Figure()
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(
go.Histogram(
x=infectados_idade_df["idade_label"],
y=infectados_idade_df["casos"],
histfunc="sum",
name="Casos",
),
secondary_y=False,
)
fig.add_trace(
go.Scatter(
x=infectados_idade_df["idade_label"],
y=infectados_idade_df["letalidade"],
name="Letalidade",
),
secondary_y=True,
)
fig.update_layout(
title_text="Casos por faixa etária",
xaxis_title_text="Idade",
yaxis_title_text="Casos",
)
fig.update_xaxes(tickangle=90)
fig.update_yaxes(title_text="Letalidade", secondary_y=True)
fig.write_image("plotly/casos-faixa-etaria.png", width=800, height=500, scale=7)
fig.show()
percentual_mortos_df = db.covid.aggregate(
[
{"$match": {"evolucaoCaso": "Óbito", "idade": {"$lt": 120}}},
{
"$bucket": {
"groupBy": "$idade",
"boundaries": [0, 60],
"default": "60",
"output": {"mortes": {"$sum": 1},},
}
},
{
"$project": {
"_id": 0,
"idade": "$_id",
"idade_label": {
"$concat": [
{"$toString": "$_id"},
" - ",
{"$toString": {"$add": [{"$toInt": "$_id"}, 59]}},
]
},
"mortes": 1,
}
},
{"$sort": {"idade": 1}},
]
)
percentual_mortos_df = pd.DataFrame(list(percentual_mortos_df))
percentual_mortos_df.head(20)
| mortes | idade | idade_label | |
|---|---|---|---|
| 0 | 204 | 0 | 0 - 59 |
| 1 | 442 | 60 | 60 - 119 |
fig = px.pie(
percentual_mortos_df, values="mortes", names="idade_label", title="Percentagem dos mortos"
)
fig.update_traces(textposition="inside")
fig.update_layout(
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.write_image("plotly/porcentagem-mortos.png", width=700, height=500, scale=7)
fig.show()
infectados_mortos_rs_df = db.covid_full.aggregate(
[
{"$match": {"state": "RS", "is_repeated": False}},
{
"$group": {
"_id": "$last_available_date",
"casos_rs": {
"$sum": {
"$cond": [
{"$eq": ["$place_type", "state"]},
"$new_confirmed",
0,
]
}
},
"total_casos_rs": {
"$sum": {
"$cond": [
{"$eq": ["$place_type", "state"]},
"$last_available_confirmed",
0,
]
}
},
"casos_poa": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Porto Alegre"]},
]
},
"$new_confirmed",
0,
]
}
},
"total_casos_poa": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Porto Alegre"]},
]
},
"$last_available_confirmed",
0,
]
}
},
"casos_tm": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Três de Maio"]},
]
},
"$new_confirmed",
0,
]
}
},
"total_casos_tm": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Três de Maio"]},
]
},
"$last_available_confirmed",
0,
]
}
},
"mortes_rs": {
"$sum": {
"$cond": [{"$eq": ["$place_type", "state"]}, "$new_deaths", 0,]
}
},
"total_mortes_rs": {
"$sum": {
"$cond": [
{"$eq": ["$place_type", "state"]},
"$last_available_deaths",
0,
]
}
},
"mortes_poa": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Porto Alegre"]},
]
},
"$new_deaths",
0,
]
}
},
"total_mortes_poa": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Porto Alegre"]},
]
},
"$last_available_deaths",
0,
]
}
},
"mortes_tm": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Três de Maio"]},
]
},
"$new_deaths",
0,
]
}
},
"total_mortes_tm": {
"$sum": {
"$cond": [
{
"$and": [
{"$eq": ["$place_type", "city"]},
{"$eq": ["$city", "Três de Maio"]},
]
},
"$last_available_deaths",
0,
]
}
},
}
},
{"$sort": {"_id": 1}},
]
)
infectados_mortos_rs_df = pd.DataFrame(list(infectados_mortos_rs_df))
infectados_mortos_rs_df.tail()
| _id | casos_rs | total_casos_rs | casos_poa | total_casos_poa | casos_tm | total_casos_tm | mortes_rs | total_mortes_rs | mortes_poa | total_mortes_poa | mortes_tm | total_mortes_tm | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 255 | 2020-11-24 | 3096 | 301766 | 0 | 0 | 0 | 0 | 49 | 6573 | 0 | 0 | 0 | 0 |
| 256 | 2020-11-25 | 4569 | 306335 | 0 | 0 | 0 | 0 | 66 | 6639 | 0 | 0 | 0 | 0 |
| 257 | 2020-11-26 | 2312 | 308647 | 0 | 0 | 0 | 0 | 47 | 6686 | 0 | 0 | 0 | 0 |
| 258 | 2020-11-27 | 2476 | 311123 | 0 | 0 | 0 | 0 | 39 | 6725 | 0 | 0 | 0 | 0 |
| 259 | 2020-11-28 | 7813 | 318936 | 0 | 0 | 0 | 0 | 43 | 6768 | 0 | 0 | 0 | 0 |
fig = make_subplots(
rows=2,
cols=2,
# shared_xaxes=True,
x_title="Data",
subplot_titles=(
"Casos RS",
"Mortes RS",
"Casos POA",
"Mortes POA",
# "Casos Três de Maio",
# "Mortes Três de Maio",
),
specs=[
[{"secondary_y": True}, {"secondary_y": True}],
[{"secondary_y": True}, {"secondary_y": True}],
# [{"secondary_y": True}, {"secondary_y": True}],
],
)
trace_casos_rs = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["casos_rs"],
)
trace_total_casos_rs = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_casos_rs"],
)
trace_mortes_rs = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["mortes_rs"],
)
trace_total_mortes_rs = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_mortes_rs"],
)
fig.add_trace(trace_casos_rs, row=1, col=1, secondary_y=False)
fig.add_trace(trace_total_casos_rs, row=1, col=1, secondary_y=True)
fig.add_trace(trace_mortes_rs, row=1, col=2, secondary_y=False)
fig.add_trace(trace_total_mortes_rs, row=1, col=2, secondary_y=True)
trace_casos_poa = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["casos_poa"],
)
trace_total_casos_poa = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_casos_poa"],
)
trace_mortes_poa = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["mortes_poa"],
)
trace_total_mortes_poa = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_mortes_poa"],
)
fig.add_trace(trace_casos_poa, row=2, col=1, secondary_y=False)
fig.add_trace(trace_total_casos_poa, row=2, col=1, secondary_y=True)
fig.add_trace(trace_mortes_poa, row=2, col=2, secondary_y=False)
fig.add_trace(trace_total_mortes_poa, row=2, col=2, secondary_y=True)
trace_casos_tm = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["casos_tm"],
)
trace_total_casos_tm = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_casos_tm"],
)
trace_mortes_tm = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["mortes_tm"],
)
trace_total_mortes_tm = go.Scatter(
x=infectados_mortos_rs_df["_id"], y=infectados_mortos_rs_df["total_mortes_tm"],
)
# fig.add_trace(trace_casos_tm, row=3, col=1, secondary_y=False)
# fig.add_trace(trace_total_casos_tm, row=3, col=1, secondary_y=True)
# fig.add_trace(trace_mortes_tm, row=3, col=2, secondary_y=False)
# fig.add_trace(trace_total_mortes_tm, row=3, col=2, secondary_y=True)
fig.update_yaxes(title_text="Acumulado", secondary_y=True)
fig.update(layout_showlegend=False)
fig.write_image("plotly/casos-rs-poa.png", width=1000, height=600, scale=7)
fig.show()
def ordenar_condicao(s):
array = s.split(", ")
array = sorted(array)
condicao_ordenada = ""
for iteracao in range(len(array)):
if iteracao == len(array) - 1:
condicao_ordenada = condicao_ordenada + array[iteracao]
else:
condicao_ordenada = condicao_ordenada + array[iteracao] + ", "
return condicao_ordenada
# Remove o conteúdo entre parenteses dentro de uma condição.
def remover_conteudo_dentro_de_parenteses_em_condicao(s):
print(s)
return re.sub(r"\([^)]*\)", "", s)
# Processa a string de uma condição.
def processar_string_condicao(s):
resultado = remover_conteudo_dentro_de_parenteses_em_condicao(s)
resultado = ordenar_condicao(resultado)
return resultado
lista_condicoes_total_infectados = []
lista_condicoes_total_mortos = []
lista_condicoes_letalidade = []
lista_condicoes = []
lista_final_condicoes_total_infectados = []
lista_final_condicoes_total_mortos = []
lista_final_condicoes_letalidade = []
lista_final_condicoes = []
lista_condicoes = db.covid.distinct("condicoes", {"resultadoTeste": "Positivo"})
for iteracao in range(len(lista_condicoes)):
lista_condicoes_total_infectados.append(0)
lista_condicoes_total_mortos.append(0)
lista_condicoes_letalidade.append(0)
for iteracao in range(len(lista_condicoes)):
# Infectados.
lista_condicoes_total_infectados[iteracao] = db.covid.count_documents(
{"resultadoTeste": "Positivo", "condicoes": lista_condicoes[iteracao]}
)
# Mortos.
lista_condicoes_total_mortos[iteracao] = db.covid.count_documents(
{"evolucaoCaso": "Óbito", "condicoes": lista_condicoes[iteracao]}
)
# Letalidade.
lista_condicoes_letalidade[iteracao] = (
lista_condicoes_total_mortos[iteracao] * 100
) / lista_condicoes_total_infectados[iteracao]
# Guarda apenas condições com letalidade maior que 0.0%.
if lista_condicoes_letalidade[iteracao] > 0.0:
string_aux = str(lista_condicoes[iteracao])
# Guarda apenas condições válidas.
if string_aux != "null" and string_aux != "" and string_aux != "nan":
# Processar string da condição computada na consulta.
string_processada = processar_string_condicao(string_aux)
# Adiciona dado na lista final de condições.
indice = -1
for iteracao_AUX in range(len(lista_final_condicoes)):
if string_processada == lista_final_condicoes[iteracao_AUX]:
indice = iteracao_AUX
# Se condição não está na lista final, adiciona a nova condição na lista final de condicões.
if indice == -1:
lista_final_condicoes_total_infectados.append(
lista_condicoes_total_infectados[iteracao]
)
lista_final_condicoes_total_mortos.append(
lista_condicoes_total_mortos[iteracao]
)
lista_final_condicoes_letalidade.append(0.0)
lista_final_condicoes.append(string_processada)
# Se a condição já está na lista, atualiza a frequência da condição.
else:
lista_final_condicoes_total_infectados[indice] = (
lista_final_condicoes_total_infectados[indice]
+ lista_condicoes_total_infectados[iteracao]
)
lista_final_condicoes_total_mortos[indice] = (
lista_final_condicoes_total_mortos[indice]
+ lista_condicoes_total_mortos[iteracao]
)
# Percentual de letalidade para cada condição computada.
for iteracao in range(len(lista_final_condicoes)):
lista_final_condicoes_letalidade[iteracao] = (
lista_final_condicoes_total_mortos[iteracao] * 100
) / lista_final_condicoes_total_infectados[iteracao]
print(
"C["
+ str(iteracao)
+ "] = {"
+ lista_final_condicoes[iteracao]
+ "}; "
+ "letalidade = "
+ str(lista_final_condicoes_letalidade[iteracao])
+ ";"
)
lista_letalidade_condicoes = []
for iteracao in range(len(lista_final_condicoes)):
lista_letalidade_condicoes.append(lista_final_condicoes_letalidade[iteracao])
lista_letalidade_numeros = []
for iteracao in range(len(lista_final_condicoes)):
lista_letalidade_numeros.append(iteracao)
lista_letalidade_nomes = []
for iteracao in range(len(lista_final_condicoes)):
lista_letalidade_nomes.append(
"[C{:d}] = {:1.2f} %".format(
iteracao, lista_final_condicoes_letalidade[iteracao]
)
)
Diabetes
Diabetes, Doenças cardíacas crônicas
Diabetes, Doenças cardíacas crônicas, Doenças respiratórias crônicas descompensadas
Diabetes, Doenças cardíacas crônicas, Obesidade
Diabetes, Doenças cardíacas crônicas, Portador de doenças cromossômicas ou estado de fragilidade imunológica
Diabetes, Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5)
Diabetes, Doenças respiratórias crônicas descompensadas
Diabetes, Imunossupressão
Diabetes, Imunossupressão, Doenças cardíacas crônicas
Diabetes, Obesidade
Doenças cardíacas crônicas
Doenças cardíacas crônicas, Diabetes
Doenças cardíacas crônicas, Diabetes, Doenças respiratórias crônicas descompensadas
Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5)
Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Imunossupressão
Doenças cardíacas crônicas, Doenças respiratórias crônicas descompensadas
Doenças cardíacas crônicas, Imunossupressão
Doenças cardíacas crônicas, Portador de doenças cromossômicas ou estado de fragilidade imunológica
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5)
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Diabetes
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Diabetes, Doenças cardíacas crônicas
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Doenças cardíacas crônicas
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Doenças cardíacas crônicas, Portador de doenças cromossômicas ou estado de fragilidade imunológica
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Imunossupressão
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Portador de doenças cromossômicas ou estado de fragilidade imunológica
Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Portador de doenças cromossômicas ou estado de fragilidade imunológica, Diabetes, Doenças cardíacas crônicas
Doenças respiratórias crônicas descompensadas
Doenças respiratórias crônicas descompensadas, Diabetes
Doenças respiratórias crônicas descompensadas, Diabetes, Doenças cardíacas crônicas
Doenças respiratórias crônicas descompensadas, Doenças cardíacas crônicas
Doenças respiratórias crônicas descompensadas, Doenças cardíacas crônicas, Diabetes
Doenças respiratórias crônicas descompensadas, Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5), Portador de doenças cromossômicas ou estado de fragilidade imunológica
Doenças respiratórias crônicas descompensadas, Doenças renais crônicas em estágio avançado (graus 3, 4 ou 5)
Doenças respiratórias crônicas descompensadas, Imunossupressão
Doenças respiratórias crônicas descompensadas, Portador de doenças cromossômicas ou estado de fragilidade imunológica
Imunossupressão
Imunossupressão, Diabetes
Imunossupressão, Doenças cardíacas crônicas
Imunossupressão, Doenças respiratórias crônicas descompensadas
Obesidade
Portador de doenças cromossômicas ou estado de fragilidade imunológica
Portador de doenças cromossômicas ou estado de fragilidade imunológica, Doenças respiratórias crônicas descompensadas
C[0] = {Diabetes}; letalidade = 0.5390297464563785;
C[1] = {Diabetes, Doenças cardíacas crônicas}; letalidade = 0.9876543209876543;
C[2] = {Diabetes, Doenças cardíacas crônicas, Doenças respiratórias crônicas descompensadas}; letalidade = 2.356902356902357;
C[3] = {Diabetes, Doenças cardíacas crônicas, Obesidade}; letalidade = 2.127659574468085;
C[4] = {Diabetes, Doenças cardíacas crônicas, Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 7.6923076923076925;
C[5] = {Diabetes, Doenças renais crônicas em estágio avançado }; letalidade = 6.153846153846154;
C[6] = {Diabetes, Doenças respiratórias crônicas descompensadas}; letalidade = 2.845528455284553;
C[7] = {Diabetes, Imunossupressão}; letalidade = 1.941747572815534;
C[8] = {Diabetes, Doenças cardíacas crônicas, Imunossupressão}; letalidade = 6.25;
C[9] = {Diabetes, Obesidade}; letalidade = 0.9900990099009901;
C[10] = {Doenças cardíacas crônicas}; letalidade = 0.49877168167944613;
C[11] = {Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado }; letalidade = 1.0309278350515463;
C[12] = {Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado , Imunossupressão}; letalidade = 25.0;
C[13] = {Doenças cardíacas crônicas, Doenças respiratórias crônicas descompensadas}; letalidade = 2.1686746987951806;
C[14] = {Doenças cardíacas crônicas, Imunossupressão}; letalidade = 1.0471204188481675;
C[15] = {Doenças cardíacas crônicas, Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 2.6315789473684212;
C[16] = {Doenças renais crônicas em estágio avançado }; letalidade = 1.7660044150110374;
C[17] = {Diabetes, Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado }; letalidade = 3.3333333333333335;
C[18] = {Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado , Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 50.0;
C[19] = {Doenças renais crônicas em estágio avançado , Imunossupressão}; letalidade = 4.3478260869565215;
C[20] = {Doenças renais crônicas em estágio avançado , Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 6.666666666666667;
C[21] = {Diabetes, Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado , Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 50.0;
C[22] = {Doenças respiratórias crônicas descompensadas}; letalidade = 0.48357512089378024;
C[23] = {Doenças cardíacas crônicas, Doenças renais crônicas em estágio avançado , Doenças respiratórias crônicas descompensadas, Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 33.333333333333336;
C[24] = {Doenças renais crônicas em estágio avançado , Doenças respiratórias crônicas descompensadas}; letalidade = 2.0408163265306123;
C[25] = {Doenças respiratórias crônicas descompensadas, Imunossupressão}; letalidade = 4.0;
C[26] = {Doenças respiratórias crônicas descompensadas, Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 5.555555555555555;
C[27] = {Imunossupressão}; letalidade = 1.7087667161961366;
C[28] = {Obesidade}; letalidade = 0.22650056625141562;
C[29] = {Portador de doenças cromossômicas ou estado de fragilidade imunológica}; letalidade = 1.225114854517611;
fig = px.bar(x=lista_letalidade_nomes, y=lista_letalidade_condicoes)
fig.update_layout(
title_text="Chance de letalidade relacionada a doenças preexistentes",
xaxis_title_text="Condição preexistente",
yaxis_title_text="Chance de letalidade (%)",
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.update_xaxes(tickangle=90)
fig.update_traces(textposition="inside")
fig.write_image("plotly/letalidade-condicoes-preexistentes.png", width=700, height=500, scale=7)
fig.show()
total_de_mortos = db.covid.count_documents({"evolucaoCaso": "Óbito"})
porcentagem_de_pessoas_entre_mortos = []
for iteracao in range(len(lista_final_condicoes)):
porcentagem_de_pessoas_entre_mortos.append(
(lista_final_condicoes_total_mortos[iteracao] * 100) / total_de_mortos
)
lista_labels = []
for iteracao in range(len(lista_final_condicoes)):
lista_labels.append(
"[C{:d}] = {:1.2f} %".format(
iteracao, porcentagem_de_pessoas_entre_mortos[iteracao]
)
)
fig = px.bar(y=porcentagem_de_pessoas_entre_mortos, x=lista_labels)
fig.update_traces(textposition="inside")
fig.update_layout(
legend=dict(orientation="h", y=0),
title="Percentual de mortos com doenças preexistentes",
uniformtext_minsize=20,
uniformtext_mode="hide",
xaxis_title_text="Condição preexistente",
yaxis_title_text="Percentual de mortos",
)
fig.update_xaxes(tickangle=90)
fig.write_image(
"plotly/percentual-mortos-condicoes-preexistentes.png",
width=700,
height=500,
scale=7,
)
fig.show()
total_de_mortos = db.covid.count_documents({"evolucaoCaso": "Óbito"})
lista_principais_condicoes = []
for iteracao in range(len(lista_final_condicoes)):
string_auxiliar = lista_final_condicoes[iteracao]
condicao_particionada = string_auxiliar.split(", ")
if len(condicao_particionada) == 1:
lista_principais_condicoes.append(condicao_particionada[0])
lista_principais_condicoes_total_mortos_porcentagem = []
for iteracao in range(len(lista_principais_condicoes)):
string_auxiliar = lista_principais_condicoes[iteracao]
valor_auxiliar = db.covid.count_documents(
{
"evolucaoCaso": "Óbito",
"condicoes": {"$regex": ".*" + string_auxiliar + ".*"},
}
)
lista_principais_condicoes_total_mortos_porcentagem.append(
(valor_auxiliar * 100) / total_de_mortos
)
lista_numeros = []
for iteracao in range(len(lista_principais_condicoes)):
lista_numeros.append(iteracao)
lista_nomes = []
for iteracao in range(len(lista_principais_condicoes)):
lista_nomes.append(
"[C{:d}] = {:1.2f} %".format(
iteracao, lista_principais_condicoes_total_mortos_porcentagem[iteracao]
)
)
for iteracao in range(len(lista_principais_condicoes)):
print(
"C["
+ str(iteracao)
+ "] = {"
+ lista_principais_condicoes[iteracao]
+ "}; percentual de pessoas entre o total de mortos = "
+ str(lista_principais_condicoes_total_mortos_porcentagem[iteracao])
)
fig = px.bar(x=lista_nomes, y=lista_principais_condicoes_total_mortos_porcentagem)
fig.update_layout(
title_text="Porcentagem de mortos com as principais doenças preexistentes",
xaxis_title_text="Doença preexistente",
yaxis_title_text="Porcentagem de mortos",
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.update_xaxes(tickangle=90)
fig.write_image(
"plotly/mortos-doencas-preexistentes.png", width=700, height=500, scale=7,
)
fig.show()
C[0] = {Diabetes}; percentual de pessoas entre o total de mortos = 14.705882352941176
C[1] = {Doenças cardíacas crônicas}; percentual de pessoas entre o total de mortos = 22.910216718266255
C[2] = {Doenças renais crônicas em estágio avançado }; percentual de pessoas entre o total de mortos = 3.7151702786377707
C[3] = {Doenças respiratórias crônicas descompensadas}; percentual de pessoas entre o total de mortos = 10.681114551083592
C[4] = {Imunossupressão}; percentual de pessoas entre o total de mortos = 5.41795665634675
C[5] = {Obesidade}; percentual de pessoas entre o total de mortos = 0.7739938080495357
C[6] = {Portador de doenças cromossômicas ou estado de fragilidade imunológica}; percentual de pessoas entre o total de mortos = 2.6315789473684212
total_de_infectados_entre_profissionais_de_saude = db.covid.count_documents(
{"resultadoTeste": "Positivo", "profissionalSaude": "Sim"}
)
lista_inicial_profissionais_de_saude = db.covid.distinct(
"cbo", {"resultadoTeste": "Positivo", "profissionalSaude": "Sim"}
)
lista_final_profissionais_de_saude_id = []
lista_final_profissionais_de_saude_nome = []
# Extrai o id de cada profissão da área da saúde. #
for iteracao in range(len(lista_inicial_profissionais_de_saude)):
string_auxiliar = str(lista_inicial_profissionais_de_saude[iteracao])
string_auxiliar = string_auxiliar.split(" ")
if (
string_auxiliar != ""
and string_auxiliar != "nan"
and string_auxiliar != "null"
and string_auxiliar != "undefined"
):
string_auxiliar = string_auxiliar[0]
ja_foi_incluido = "falso"
# Verifica se a string já foi adicionada na lista final. #
for iteracao_AUX in range(len(lista_final_profissionais_de_saude_id)):
if string_auxiliar == lista_final_profissionais_de_saude_id[iteracao_AUX]:
ja_foi_incluido = "sim"
# Se a string ainda não foi adicionada, então adiciona ela na lista final. #
if ja_foi_incluido == "falso":
lista_final_profissionais_de_saude_id.append(string_auxiliar)
lista_final_profissionais_de_saude_nome.append(
lista_inicial_profissionais_de_saude[iteracao]
)
porcentagem_de_infectados_por_profissao = []
for iteracao in range(len(lista_final_profissionais_de_saude_id)):
string_auxiliar = lista_final_profissionais_de_saude_id[iteracao]
valor_auxiliar = db.covid.count_documents(
{
"resultadoTeste": "Positivo",
"profissionalSaude": "Sim",
"cbo": {"$regex": ".*" + string_auxiliar + ".*"},
}
)
porcentagem_de_infectados_por_profissao.append(
(valor_auxiliar * 100) / total_de_infectados_entre_profissionais_de_saude
)
string_auxiliar = lista_final_profissionais_de_saude_nome[iteracao]
print(
"[P"
+ str(iteracao)
+ "] = {"
+ str(string_auxiliar)
+ "}; porcentagem de pessoas infectadas = "
+ str(porcentagem_de_infectados_por_profissao[iteracao])
+ ";"
)
lista_numeros = []
lista_nomes = []
lista_final_valores = []
contador = 0
for iteracao in range(len(porcentagem_de_infectados_por_profissao)):
if porcentagem_de_infectados_por_profissao[iteracao] > 1.0:
lista_numeros.append(contador)
lista_nomes.append(
"[P{:d}] = {:1.2f} %".format(
iteracao, porcentagem_de_infectados_por_profissao[iteracao]
)
)
lista_final_valores.append(porcentagem_de_infectados_por_profissao[iteracao])
string_auxiliar = lista_final_profissionais_de_saude_nome[iteracao]
print(
"[P"
+ str(iteracao)
+ "] = {"
+ string_auxiliar
+ "}; porcentagem de pessoas infectadas = "
+ str(porcentagem_de_infectados_por_profissao[iteracao])
+ ";"
)
contador = contador + 1
[P0] = {nan}; porcentagem de pessoas infectadas = 0.0;
[P1] = {0101 - OFICIAIS GENERAIS DAS FORÇAS ARMADAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P2] = {0102 - OFICIAIS DAS FORÇAS ARMADAS}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P3] = {0103 - PRAÇAS DAS FORÇAS ARMADAS}; porcentagem de pessoas infectadas = 0.03368421052631579;
[P4] = {0201 - OFICIAIS SUPERIORES DA POLÍCIA MILITAR}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P5] = {0211 - SUBTENENTES E SARGENTOS DA POLICIA MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P6] = {0212 - CABOS E SOLDADOS DA POLÍCIA MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P7] = {0301 - OFICIAIS SUPERIORES DO CORPO DE BOMBEIROS MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P8] = {0302 - OFICIAIS INTERMEDIÁRIOS DO CORPO DE BOMBEIROS MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P9] = {0303 - TENENTES DO CORPO DE BOMBEIROS MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P10] = {0312 - CABOS E SOLDADOS DO CORPO DE BOMBEIROS MILITAR}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P11] = {1112 - DIRIGENTES GERAIS DA ADMINISTRAÇÃO PÚBLICA}; porcentagem de pessoas infectadas = 0.04631578947368421;
[P12] = {1114 - DIRIGENTES DO SERVIÇO PÚBLICO}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P13] = {1115 - GESTORES PÚBLICOS}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P14] = {1142 - DIRIGENTES E ADMINISTRADORES DE ENTIDADES PATRONAIS E DOS TRABALHADORES E DE OUTROS INTERESSES SÓCIOECONÔMICOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P15] = {1210 - DIRETORES GERAIS}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P16] = {1223 - DIRETORES DE OPERAÇÕES DE OBRAS EM EMPRESA DE CONSTRUÇÃO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P17] = {1231 - DIRETORES ADMINISTRATIVOS E FINANCEIROS}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P18] = {1238 - DIRETORES DE MANUTENÇÃO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P19] = {1311 - DIRETORES E GERENTES DE OPERAÇÕES EM EMPRESA DE SERVIÇOS PESSOAIS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P20] = {1312 - GESTORES E ESPECIALISTAS DE OPERAÇÕES EM EMPRESAS}; porcentagem de pessoas infectadas = 1.0526315789473684;
[P21] = {1414 - GERENTES DE OPERAÇÕES COMERCIAIS E DE ASSISTÊNCIA TÉCNICA}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P22] = {1421 - GERENTES ADMINISTRATIVOS}; porcentagem de pessoas infectadas = 0.02526315789473684;
[P23] = {1423 - GERENTES DE COMERCIALIZAÇÃO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P24] = {1427 - GERENTES DE MANUTENÇÃO E AFINS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P25] = {2011 - PROFISSIONAIS DA BIOTECNOLOGIA}; porcentagem de pessoas infectadas = 0.04631578947368421;
[P26] = {2030 - PESQUISADOR DAS CIÊNCIAS BIOLÓGICAS}; porcentagem de pessoas infectadas = 0.04631578947368421;
[P27] = {2124 - ANALISTAS DE TECNOLOGIA DA INFORMAÇÃO}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P28] = {2131 - FÍSICO ATUANDO NA ÁREA DA SAÚDE}; porcentagem de pessoas infectadas = 0.05052631578947368;
[P29] = {2132 - QUÍMICO ATUANDO NA ÁREA DA SAÚDE}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P30] = {2140 - ENGENHEIROS AMBIENTAIS E AFINS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P31] = {2141 - ARQUITETOS E URBANISTAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P32] = {2142 - ENGENHEIROS CIVIS E AFINS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P33] = {2143 - ENGENHEIROS ELETRICISTAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P34] = {2149 - ENGENHEIRO DE SEGURANÇA DO TRABALHO OU HIGIENISTA OCUPACIONAL}; porcentagem de pessoas infectadas = 0.0968421052631579;
[P35] = {2211 - BIÓLOGO}; porcentagem de pessoas infectadas = 0.029473684210526315;
[P36] = {2212 - BIOMÉDICO}; porcentagem de pessoas infectadas = 0.3410526315789474;
[P37] = {2222 - ENGENHEIROS DE ALIMENTOS E AFINS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P38] = {2232 - CIRURGIÃO-DENTISTA}; porcentagem de pessoas infectadas = 2.5978947368421053;
[P39] = {2233 - MÉDICO VETERINÁRIO OU ZOOTECNISTA}; porcentagem de pessoas infectadas = 0.4421052631578947;
[P40] = {2234 - FARMACÊUTICO}; porcentagem de pessoas infectadas = 2.1557894736842105;
[P41] = {2235 - ENFERMEIRO}; porcentagem de pessoas infectadas = 12.47578947368421;
[P42] = {2236 - FISIOTERAPEUTA}; porcentagem de pessoas infectadas = 2.816842105263158;
[P43] = {2237 - NUTRICIONISTA}; porcentagem de pessoas infectadas = 1.4021052631578947;
[P44] = {2238 - FONOAUDIÓLOGO}; porcentagem de pessoas infectadas = 0.37473684210526315;
[P45] = {2239 - TERAPEUTA OCUPACIONAL, ORTOPTISTA OU MUSICOTERAPEUTA}; porcentagem de pessoas infectadas = 0.1431578947368421;
[P46] = {2241 - PROFISSIONAIS DA EDUCAÇÃO FÍSICA}; porcentagem de pessoas infectadas = 0.3663157894736842;
[P47] = {225 - MÉDICO}; porcentagem de pessoas infectadas = 10.947368421052632;
[P48] = {2251 - MÉDICOS CLÍNICOS}; porcentagem de pessoas infectadas = 0.32;
[P49] = {2252 - MÉDICOS EM ESPECIALIDADES CIRÚRGICAS}; porcentagem de pessoas infectadas = 0.029473684210526315;
[P50] = {2253 - MÉDICOS EM MEDICINA DIAGNÓSTICA E TERAPÊUTICA}; porcentagem de pessoas infectadas = 1.0105263157894737;
[P51] = {226 - MUSICOTERAPEUTA, ARTETERAPEUTA, EQUOTERAPEUTA OU NATURÓLOGO}; porcentagem de pessoas infectadas = 0.03368421052631579;
[P52] = {2261 - OSTEOPATAS E QUIROPRAXISTAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P53] = {2263 - PROFISSIONAIS DAS TERAPIAS CRIATIVAS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P54] = {231 - PROFESSOR DE EDUCAÇÃO INFANTIL OU ENSINO FUNDAMENTAL}; porcentagem de pessoas infectadas = 0.08;
[P55] = {232 - PROFESSOR DO ENSINO MÉDIO}; porcentagem de pessoas infectadas = 3.9957894736842103;
[P56] = {233 - PROFESSOR DE ENSINO PROFISSIONALIZANTE}; porcentagem de pessoas infectadas = 0.4842105263157895;
[P57] = {234 - PROFESSOR DE ENSINO SUPERIOR}; porcentagem de pessoas infectadas = 2.176842105263158;
[P58] = {2344 - PROFESSORES DE CIÊNCIAS BIOLÓGICAS E DA SAÚDE DO ENSINO SUPERIOR}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P59] = {239 - OUTROS PROFISSIONAIS DE ENSINO}; porcentagem de pessoas infectadas = 0.2736842105263158;
[P60] = {2512 - ECONOMISTAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P61] = {2515 - PSICÓLOGO}; porcentagem de pessoas infectadas = 1.6042105263157895;
[P62] = {2516 - ASSISTENTES SOCIAIS E ECONOMISTAS DOMÉSTICOS}; porcentagem de pessoas infectadas = 0.7747368421052632;
[P63] = {251605 - ASSISTENTE SOCIAL}; porcentagem de pessoas infectadas = 0.6863157894736842;
[P64] = {2521 - ADMINISTRADORES}; porcentagem de pessoas infectadas = 0.05052631578947368;
[P65] = {2522 - CONTADORES E AFINS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P66] = {2523 - SECRETÁRIAS(OS) EXECUTIVAS(OS) E AFINS}; porcentagem de pessoas infectadas = 0.1936842105263158;
[P67] = {2524 - PROFISSIONAIS DE RECURSOS HUMANOS}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P68] = {2525 - PROFISSIONAIS DE ADMINISTRAÇÃO ECÔNOMICO-FINANCEIRA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P69] = {2526 - PROFISSIONAIS DA ADMINISTRAÇÃO DOS SERVIÇOS DE SEGURANÇA}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P70] = {2531 - PROFISSIONAIS DE PUBLICIDADE}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P71] = {2541 - AUDITORES FISCAIS E TÉCNICOS DA RECEITA FEDERAL}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P72] = {2544 - FISCAIS DE TRIBUTOS ESTADUAIS E MUNICIPAIS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P73] = {2545 - PROFISSIONAIS DA FISCALIZAÇÃO DE ATIVIDADES URBANAS}; porcentagem de pessoas infectadas = 0.037894736842105266;
[P74] = {2613 - ARQUIVISTAS E MUSEÓLOGOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P75] = {2615 - PROFISSIONAIS DA ESCRITA}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P76] = {2711 - CHEFES DE COZINHA E AFINS}; porcentagem de pessoas infectadas = 0.037894736842105266;
[P77] = {3114 - TÉCNICOS EM FABRICAÇÃO DE PRODUTOS PLÁSTICOS E DE BORRACHA}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P78] = {3121 - TÉCNICOS EM CONSTRUÇÃO CIVIL (EDIFICAÇÕES)}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P79] = {3122 - TÉCNICO DE SANEAMENTO ATUANDO NA ÁREA DE SAÚDE}; porcentagem de pessoas infectadas = 0.1936842105263158;
[P80] = {313 - TÉCNICO EM ELETROELETRÔNICA E FOTÔNICA ATUANDO NA ÁREA DE SAÚDE}; porcentagem de pessoas infectadas = 0.08421052631578947;
[P81] = {3131 - TÉCNICOS EM ELETRICIDADE E ELETROTÉCNICA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P82] = {3144 - TÉCNICOS MECÂNICOS NA MANUTENÇÃO DE MÁQUINAS}; porcentagem de pessoas infectadas = 0.029473684210526315;
[P83] = {3146 - TÉCNICOS EM METALURGIA (ESTRUTURAS METÁLICAS)}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P84] = {3191 - TÉCNICOS DO VESTUÁRIO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P85] = {3201 - TÉCNICOS EM BIOLOGIA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P86] = {3221 - TECNÓLOGOS E TÉCNICOS EM TERAPIAS COMPLEMENTARES E ESTÉTICAS}; porcentagem de pessoas infectadas = 0.13052631578947368;
[P87] = {3222 - TÉCNICO OU AUXILIAR EM ENFERMAGEM}; porcentagem de pessoas infectadas = 41.46947368421053;
[P88] = {3223 - TÉCNICO EM ÓPTICA E OPTOMETRIA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P89] = {3224 - TÉCNICOS DE ODONTOLOGIA}; porcentagem de pessoas infectadas = 0.7452631578947368;
[P90] = {3224 - TÉCNICO OU AUXILIAR ODONTOLOGIA/SAÚDE BUCAL}; porcentagem de pessoas infectadas = 0.5473684210526316;
[P91] = {3225 - TÉCNICOS EM PRÓTESES ORTOPÉDICAS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P92] = {3225 - TÉCNCIO EM PRÓTESES ORTOPÉDICAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P93] = {3226 - TÉCNICO EM IMOBILIZAÇÃO ORTOPÉDICA}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P94] = {3241 - TECNÓLOGO OU TÉCNICO EM METODOS DE DIGANÓSTICO E TERAPÊUTICA}; porcentagem de pessoas infectadas = 0.3368421052631579;
[P95] = {3242 - TÉCNICO DE LABORATÓRIO DE SAÚDE OU BANCOS DE SANGUE}; porcentagem de pessoas infectadas = 0.3831578947368421;
[P96] = {3251 - TÉCNICO EM FARMÁCIA E EM MANIPULAÇÃO FARMACÊUTICA}; porcentagem de pessoas infectadas = 0.8168421052631579;
[P97] = {3251 - TÉCNICO EM FARMÁCIA E MANIPULAÇÃO FARMACÊUTICA}; porcentagem de pessoas infectadas = 0.5389473684210526;
[P98] = {3252 - TÉCNICOS EM PRODUÇÃO}; porcentagem de pessoas infectadas = 0.45473684210526316;
[P99] = {3252 - TÉCNICO EM PRODUÇÃO, CONSERVAÇÃO E QUALIDADE DE ALIMENTOS}; porcentagem de pessoas infectadas = 0.42105263157894735;
[P100] = {3513 - TÉCNICOS EM ADMINISTRAÇÃO}; porcentagem de pessoas infectadas = 0.0968421052631579;
[P101] = {3515 - TÉCNICOS EM SECRETARIADO}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P102] = {3516 - TÉCNICO DE SEGURANÇA NO TRABALHO OU HIGIENE OCUPACIONAL}; porcentagem de pessoas infectadas = 0.8842105263157894;
[P103] = {3522 - AGENTES DA SAÚDE E DO MEIO AMBIENTE}; porcentagem de pessoas infectadas = 0.7157894736842105;
[P104] = {352210 - AGENTE DE SAÚDE PÚBLICA}; porcentagem de pessoas infectadas = 0.5642105263157895;
[P105] = {3542 - COMPRADORES}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P106] = {3547 - REPRESENTANTES COMERCIAIS AUTÔNOMOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P107] = {4101 - SUPERVISORES ADMINISTRATIVOS}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P108] = {4102 - SUPERVISORES DE SERVIÇOS FINANCEIROS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P109] = {4110 - AGENTES}; porcentagem de pessoas infectadas = 0.03368421052631579;
[P110] = {4131 - AUXILIARES DE CONTABILIDADE}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P111] = {4132 - ESCRITURÁRIOS DE SERVIÇOS BANCÁRIOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P112] = {4141 - ALMOXARIFES E ARMAZENISTAS}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P113] = {4151 - AUXILIARES DE SERVIÇOS DE DOCUMENTAÇÃO}; porcentagem de pessoas infectadas = 0.10947368421052632;
[P114] = {4152 - TRABALHADORES NOS SERVIÇOS DE CLASSIFICAÇÃO E ENTREGAS DE CORRESPONDÊNCIAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P115] = {4153 - TRABALHADORES EM REGISTROS E INFORMAÇÕES EM SAÚDE}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P116] = {4201 - SUPERVISORES DE ATENDIMENTO AO PÚBLICO E DE PESQUISA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P117] = {4221 - RECEPCIONISTA}; porcentagem de pessoas infectadas = 2.72;
[P118] = {4222 - OPERADORES DE TELEFONIA}; porcentagem de pessoas infectadas = 0.1726315789473684;
[P119] = {5102 - SUPERVISORES DE LAVANDERIA}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P120] = {5103 - SUPERVISORES DOS SERVIÇOS DE PROTEÇÃO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P121] = {5111 - TRABALHADORES DE SEGURANÇA E ATENDIMENTO AOS USUÁRIOS NOS TRANSPORTES}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P122] = {5121 - TRABALHADORES DOS SERVIÇOS DOMÉSTICOS EM GERAL}; porcentagem de pessoas infectadas = 0.08421052631578947;
[P123] = {5132 - COZINHEIROS}; porcentagem de pessoas infectadas = 0.10105263157894737;
[P124] = {5133 - CAMAREIROS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P125] = {5134 - TRABALHADORES NO ATENDIMENTO EM ESTABELECIMENTOS DE SERVIÇOS DE ALIMENTAÇÃO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P126] = {5135 - TRABALHADORES AUXILIARES NOS SERVIÇOS DE ALIMENTAÇÃO}; porcentagem de pessoas infectadas = 0.37894736842105264;
[P127] = {5142 - TRABALHADORES NOS SERVIÇOS DE COLETA DE RESÍDUOS}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P128] = {5143 - TRABALHADORES NOS SERVIÇOS DE MANUTENÇÃO DE EDIFICAÇÕES}; porcentagem de pessoas infectadas = 0.08842105263157894;
[P129] = {5151 - OUTRO TIPO DE AGENTE DE SAÚDE OU VISITADOR SANITÁRIO}; porcentagem de pessoas infectadas = 4.408421052631579;
[P130] = {515105 - AGENTE COMUNITÁRIO DE SAÚDE}; porcentagem de pessoas infectadas = 2.5557894736842104;
[P131] = {515115 -PARTEIRA LEIGA}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P132] = {515135 - SOCORRISTA NÃO MÉDICO E NÃO ENFERMEIRO}; porcentagem de pessoas infectadas = 0.20210526315789473;
[P133] = {515140 - AGENTE DE COMBATE A ENDEMIAS}; porcentagem de pessoas infectadas = 0.3957894736842105;
[P134] = {5152 - AUXILIARES DE LABORATÓRIO DA SAÚDE}; porcentagem de pessoas infectadas = 0.45052631578947366;
[P135] = {5153 - AUXILIAR DA ÁREA SOCIAL}; porcentagem de pessoas infectadas = 0.4631578947368421;
[P136] = {5161 - TRABALHADORES NOS SERVIÇOS DE EMBELEZAMENTO E HIGIENE}; porcentagem de pessoas infectadas = 0.5768421052631579;
[P137] = {5162 - CUIDADOR EM SAÚDE}; porcentagem de pessoas infectadas = 2.0631578947368423;
[P138] = {5164 - LAVADORES E PASSADORES DE ROUPA}; porcentagem de pessoas infectadas = 0.021052631578947368;
[P139] = {5165 - TRABALHADORES DOS SERVIÇOS FUNERÁRIOS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P140] = {5171 - BOMBEIROS}; porcentagem de pessoas infectadas = 0.05052631578947368;
[P141] = {5172 - POLICIAIS}; porcentagem de pessoas infectadas = 0.016842105263157894;
[P142] = {5173 - VIGILANTES E GUARDAS DE SEGURANÇA}; porcentagem de pessoas infectadas = 0.06736842105263158;
[P143] = {5174 - PORTEIROS}; porcentagem de pessoas infectadas = 0.042105263157894736;
[P144] = {5191 - MOTOCICLISTAS E CICLISTAS DE ENTREGAS RÁPIDAS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P145] = {5193 - TRABALHADORES DE SERVIÇOS VETERINÁRIOS}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P146] = {5199 - OUTROS TRABALHADORES DOS SERVIÇOS}; porcentagem de pessoas infectadas = 0.26526315789473687;
[P147] = {5201 - SUPERVISORES DE VENDAS E DE PRESTAÇÃO DE SERVIÇOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P148] = {5211 - OPERADORES DO COMÉRCIO EM LOJAS E MERCADOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P149] = {6120 - PRODUTORES AGRÍCOLAS POLIVALENTES}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P150] = {7164 - GESSEIROS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P151] = {7170 - AJUDANTES DE OBRAS CIVIS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P152] = {7243 - TRABALHADORES DE SOLDAGEM E CORTE DE LIGAS METÁLICAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P153] = {7631 - TRABALHADORES DA PREPARAÇÃO DA CONFECÇÃO DE ROUPAS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P154] = {7661 - TRABALHADORES DA PRÉ-IMPRESSÃO GRÁFICA}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P155] = {7664 - TRABALHADORES DE LABORATÓRIO FOTOGRÁFICO E RADIOLÓGICO}; porcentagem de pessoas infectadas = 0.8463157894736842;
[P156] = {766420 - AUXILIAR DE RADIOLOGIA}; porcentagem de pessoas infectadas = 0.8042105263157895;
[P157] = {7823 - MOTORISTAS DE VEÍCULOS DE PEQUENO E MÉDIO PORTE}; porcentagem de pessoas infectadas = 1.6673684210526316;
[P158] = {782320 - CONDUTOR DE AMBULÂNCIA}; porcentagem de pessoas infectadas = 1.3810526315789473;
[P159] = {7824 - MOTORISTAS DE ÔNIBUS URBANOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P160] = {7825 - MOTORISTAS DE VEÍCULOS DE CARGAS EM GERAL}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P161] = {8103 - SUPERVISORES DE PRODUÇÃO EM INDÚSTRIAS DE PRODUTOS FARMACÊUTICOS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P162] = {8414 - TRABALHADORES NA FABRICAÇÃO E CONSERVAÇÃO DE ALIMENTOS}; porcentagem de pessoas infectadas = 0.01263157894736842;
[P163] = {8625 - OPERADORES DE INSTALAÇÕES DE REFRIGERAÇÃO E AR-CONDICIONADO}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P164] = {9111 - MECÂNICOS DE MANUTENÇÃO DE BOMBAS}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P165] = {9153 - TÉCNICOS EM MANUTENÇÃO E REPARAÇÃO DE EQUIPAMENTOS BIOMÉDICOS}; porcentagem de pessoas infectadas = 0.008421052631578947;
[P166] = {9511 - ELETRICISTAS DE MANUTENÇÃO ELETROELETRÔNICA}; porcentagem de pessoas infectadas = 0.004210526315789474;
[P20] = {1312 - GESTORES E ESPECIALISTAS DE OPERAÇÕES EM EMPRESAS}; porcentagem de pessoas infectadas = 1.0526315789473684;
[P38] = {2232 - CIRURGIÃO-DENTISTA}; porcentagem de pessoas infectadas = 2.5978947368421053;
[P40] = {2234 - FARMACÊUTICO}; porcentagem de pessoas infectadas = 2.1557894736842105;
[P41] = {2235 - ENFERMEIRO}; porcentagem de pessoas infectadas = 12.47578947368421;
[P42] = {2236 - FISIOTERAPEUTA}; porcentagem de pessoas infectadas = 2.816842105263158;
[P43] = {2237 - NUTRICIONISTA}; porcentagem de pessoas infectadas = 1.4021052631578947;
[P47] = {225 - MÉDICO}; porcentagem de pessoas infectadas = 10.947368421052632;
[P50] = {2253 - MÉDICOS EM MEDICINA DIAGNÓSTICA E TERAPÊUTICA}; porcentagem de pessoas infectadas = 1.0105263157894737;
[P55] = {232 - PROFESSOR DO ENSINO MÉDIO}; porcentagem de pessoas infectadas = 3.9957894736842103;
[P57] = {234 - PROFESSOR DE ENSINO SUPERIOR}; porcentagem de pessoas infectadas = 2.176842105263158;
[P61] = {2515 - PSICÓLOGO}; porcentagem de pessoas infectadas = 1.6042105263157895;
[P87] = {3222 - TÉCNICO OU AUXILIAR EM ENFERMAGEM}; porcentagem de pessoas infectadas = 41.46947368421053;
[P117] = {4221 - RECEPCIONISTA}; porcentagem de pessoas infectadas = 2.72;
[P129] = {5151 - OUTRO TIPO DE AGENTE DE SAÚDE OU VISITADOR SANITÁRIO}; porcentagem de pessoas infectadas = 4.408421052631579;
[P130] = {515105 - AGENTE COMUNITÁRIO DE SAÚDE}; porcentagem de pessoas infectadas = 2.5557894736842104;
[P137] = {5162 - CUIDADOR EM SAÚDE}; porcentagem de pessoas infectadas = 2.0631578947368423;
[P157] = {7823 - MOTORISTAS DE VEÍCULOS DE PEQUENO E MÉDIO PORTE}; porcentagem de pessoas infectadas = 1.6673684210526316;
[P158] = {782320 - CONDUTOR DE AMBULÂNCIA}; porcentagem de pessoas infectadas = 1.3810526315789473;
fig = px.bar(x=lista_nomes, y=lista_final_valores)
fig.update_layout(
title_text="Profissionais de saúde infectados",
xaxis_title_text="Profissão",
yaxis_title_text="Porcentagem de infectados",
uniformtext_minsize=20,
uniformtext_mode="hide",
)
fig.update_xaxes(tickangle=90)
fig.write_image(
"plotly/profissionais-saude-infectados.png",
width=700,
height=500,
scale=7,
)
fig.show()
Neste gráfico, mostramos qual é a relação do IDHM (Índice de Desenvolvimento Humano Municipal) das cidades do RS com a letalidade da Covid-19.
idh_df = pd.DataFrame(list(db.idh.find({})))
letalidade_cidade = db.covid_full.aggregate(
[
{"$match": {"is_repeated": False, "place_type": "city", "state": "RS"}},
{
"$group": {
"_id": "$city",
"casos": {"$sum": "$new_confirmed"},
"mortes": {"$sum": "$new_deaths"},
"estimated_population": {"$first": "$estimated_population"},
}
},
{"$match": {"casos": {"$gt": 0}}},
{
"$project": {
"_id": 0,
"municipio": "$_id",
"estimated_population": 1,
"casos": 1,
"mortes": 1,
"letalidade": {"$divide": ["$mortes", "$casos"]},
}
},
{"$sort": {"letalidade": -1}},
]
)
letalidade_cidade_df = pd.DataFrame(list(letalidade_cidade))
letalidade_cidade_df["letalidade"] = letalidade_cidade_df["letalidade"] * 100
idh_letalidade_df = pd.merge(idh_df, letalidade_cidade_df, on="municipio", how="inner")
idh_letalidade_df.head(10)
| _id | municipio | idhm | idhm_renda | idhm_educacao | idhm_longevidade | casos | mortes | estimated_population | letalidade | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 5fc3141780488fb6340c127c | Porto Alegre | 0.805 | 0.857 | 0.702 | 0.867 | 48775 | 1467 | 1488252.0 | 3.007688 |
| 1 | 5fc3141780488fb6340c127d | Carlos Barbosa | 0.796 | 0.835 | 0.724 | 0.835 | 1162 | 14 | 30241.0 | 1.204819 |
| 2 | 5fc3141780488fb6340c127e | Ipiranga do Sul | 0.791 | 0.866 | 0.698 | 0.818 | 4 | 0 | 1880.0 | 0.000000 |
| 3 | 5fc3141780488fb6340c127f | Três Arroios | 0.791 | 0.851 | 0.689 | 0.843 | 23 | 0 | 2643.0 | 0.000000 |
| 4 | 5fc3141780488fb6340c1280 | Lagoa dos Três Cantos | 0.789 | 0.852 | 0.754 | 0.765 | 32 | 0 | 1607.0 | 0.000000 |
| 5 | 5fc3141780488fb6340c1281 | Garibaldi | 0.786 | 0.856 | 0.688 | 0.825 | 1463 | 13 | 35440.0 | 0.888585 |
| 6 | 5fc3141780488fb6340c1282 | Nova Araçá | 0.785 | 0.843 | 0.722 | 0.796 | 654 | 3 | 4826.0 | 0.458716 |
| 7 | 5fc3141780488fb6340c1283 | Casca | 0.785 | 0.847 | 0.733 | 0.778 | 454 | 4 | 9051.0 | 0.881057 |
| 8 | 5fc3141780488fb6340c1284 | Santa Maria | 0.784 | 0.848 | 0.715 | 0.795 | 6909 | 107 | 283677.0 | 1.548705 |
| 9 | 5fc3141780488fb6340c1285 | Ivoti | 0.784 | 0.848 | 0.729 | 0.780 | 646 | 6 | 24690.0 | 0.928793 |
fig = px.scatter(idh_letalidade_df, x="letalidade", y="idhm", size="estimated_population", hover_data=["municipio"])
fig.update_layout(title_text="Letalidade x IDHM", xaxis_title_text="Letalidade", yaxis_title_text="IDHM")
fig.write_image("plotly/letalidade-idh.png", width=1000, height=600, scale=7)
fig.show()